<?php
/**
 * Created by : PhpStorm
 * Message: 后台父类控制器
 * User: bingdi
 * Time: 2020/2/1816:56
 * motto: 现在的努力是为了小时候吹过的牛逼!
 */

namespace app\admin\controller;


use app\BaseController;
use app\common\model\Role;
use Qiniu\Auth;
use Qiniu\Storage\UploadManager;
use TencentCloud\Cds\V20180420\Models\DbauditTypesInfo;
use think\exception\HttpResponseException;
use think\Filesystem;
use think\facade\Db;
use OSS\OssClient;
use OSS\Core\OssException;
class AdminBase extends BaseController
{
    public $adminUser;
    public $language_type=1;
    public function initialize()
    {
//        dd(session('adminuser'));
        parent::initialize(); // TODO: Change the autogenerated stub
        //已改成中间件写法
        if (empty($this->isLogin())){
            return $this->redirect(url('login/index'),302);
        }
    }

    /**\
     * 判断是否登录
     */
    public function isLogin(){
        $this->adminUser=session('adminuser');
        if (empty($this->adminUser)){
            return false;
        }
        if (!session('language')){
            $this->language_type=1;
            session('language',$this->language_type);
            session('language_text','中文');
        }
        $this->language_type=session('language');
        return true;
    }
    public function redirect(...$args){
        throw new HttpResponseException(redirect(...$args));
    }
    /**
     * 图片上传
     *
     * @Param   type  $data
     * @Return  type  $data
     */
    public function upload(){
        {
            //验证
            $file = request()->file('image');
            // 移动到框架应用根目录/public/uploads/ 目录下
            if($file){
                $info = $file->move( '../public/image/cdsmd/');
                if($info){
                    // 成功上传后 获取上传信息
                    $name = $info->getSaveName();
                    $img_src = request()->domain() . "/image/cdsmd/" . str_replace('\\', '/', $name);
                    echo $img_src; //返回ajax请求
                }else{
                    // 上传失败获取错误信息
                    $this->error($file->getError());
                }
            }
        }
    }
    //上传到阿里云
    public function images(){
        // 配置信息
        $accessKeyId = "LTAI5tLdXBsG8XjCG1ua7yMJ";
        $accessKeySecret = "4mgykwCIwiYsJMkBpl5TurKoJ1YP1H";
        $endpoint = "oss-cn-qingdao.aliyuncs.com"; // 例如：https://oss-cn-hangzhou.aliyuncs.com，根据实际地域修改
        $bucket = "kedao-srv";
        // 获取上传图片信息
        $file = request()->file('img');
        // 图片存储在本地的临时路经
        $filePath = $file->getRealPath();
        // 获取图片后缀
        $ext = $file->getOriginalExtension();
        // 上传到阿里云后保存的新图片名
        $newImageName  = 'website/'.date('Y') . '/' . date('m') .'/' . substr(md5($file->getOriginalName()),0,6)
            . date('YmdHis') . rand(00000,99999) . '.'.$ext;
        try {
        $ossClient=new OssClient($accessKeyId, $accessKeySecret, $endpoint);
        $res=$ossClient->uploadFile($bucket, $newImageName, $filePath);
            echo $res['info']['url'];
        }catch (OssException $e){
            printf(__FUNCTION__. ": FAILED\n");
            printf($e->getMessage(). "\n");
        }
    }
    public function image(){
        // 获取上传图片信息
        $file = request()->file('img');
        // 图片存储在本地的临时路经
        $filePath = $file->getRealPath();
        // 获取图片后缀
        $ext = $file->getOriginalExtension();
        // 上传到七牛后保存的新图片名
        $newImageName  = date('Y') . '/' . date('m') .'/' . substr(md5($file->getOriginalName()),0,6)
            . date('YmdHis') . rand(00000,99999) . '.'.$ext;
        // 说明：为了方便阅读，上一行代码进行的回车，如果你的遇到了问题，请放到一行


        // 构建鉴权对象
        $auth = new Auth(config('qiniu.ak') ,config('qiniu.sk'));
        // 要上传的空间位置
        $token = $auth->uploadToken(config('qiniu.bucket_index'));
        //域名
        $domain=config('qiniu.domain');
        // 初始化 UploadManager 对象并进行文件的上传。
        $uploadMgr = new UploadManager();
        list($ret , $err) = $uploadMgr->putFile($token , $newImageName , $filePath);
        if($err !== null){
            return null;
        }else{
            echo $data='http://'.$domain.'/'.$newImageName;
            // 图片上传成功
//            return $newImageName;
        }
    }
    /**\
     * 上传图书封面
     */
    public function image_book(){
        // 获取上传图片信息
        $file = request()->file('img');
        $id = input('post.id');
        // 图片存储在本地的临时路经
        $filePath = $file->getRealPath();
        // 获取图片后缀
        $ext = $file->getOriginalExtension();
        // 上传到七牛后保存的新图片名
        $newImageName  = date('Y') . '/' . date('m') .'/' . substr(md5($file->getOriginalName()),0,6)
            . date('YmdHis') . rand(00000,99999) . '.'.$ext;
        // 说明：为了方便阅读，上一行代码进行的回车，如果你的遇到了问题，请放到一行


        // 构建鉴权对象
        $auth = new Auth(config('qiniu.ak') ,config('qiniu.sk'));
        // 要上传的空间位置
        $token = $auth->uploadToken(config('qiniu.bucket_index'));
        //域名
        $domain=config('qiniu.domain');
        // 初始化 UploadManager 对象并进行文件的上传。
        $uploadMgr = new UploadManager();
        list($ret , $err) = $uploadMgr->putFile($token , $newImageName , $filePath);
        if($err !== null){
            return show(0,'上传失败');
        }
        $data='http://'.$domain.'/'.$newImageName;
        //修改数据库
        $model=Db::name('book')
            ->where('id',$id)
            ->update(['img'=>$data]);
        if (!$model){
            return show(0,'图片保存失败');
        }
        return show(1,$data);
    }
}